<?php

class SeancesController extends AppController{

	var $uses = array('Film', 'Salle', 'Seance');

	//Actions ne nécessitant pas d'authentification
	public function beforeFilter(){
		parent::beforeFilter();
		$this->Auth->allow('index', 'show');
	}

	//Autorisations
	public function isAuthorized($user) {

		//Seul l'administrateur peut ajouter/modifier/supprimer des séances
		if (isset($user['role']) && $user['role'] === 'admin') {

			if ($this->action === 'admin_add')
				return true;
			if ($this->action === 'admin_edit')
				return true;
			if ($this->action === 'admin_delete')
				return true;
		}

		return parent::isAuthorized($user);
	}

	//Action par défaut
	public function index() {
		$query = $this->Seance->find('all');
		$this->set('seances', $query);
	}
	
	//Afficher une séance
	public function show($id) {
		$this->Seance->id = $id;
		$this->set('seance', $this->Seance->read());
	}

	//Liste des séances pour un film
	public function admin_index($id_film) {
		$query = $this->Seance->find('all', array(
			'conditions' => array('Seance.film_id' => $id_film)
		));
		$this->set('seances', $query);
	}

	//Créer une séance
	public function admin_add() {
		if (!empty($this->data)) {

			//Enregistrement dans la base
			if ($this->Seance->save($this->data)) {
				$this->Session->setFlash('La séance a été crée.');
				$this->redirect(array('admin' => true,'controller' => 'seances', 'action' => 'index', $this->data['Seance']['film_id']));
			}
		}

		$films = $this->Film->find('list', array(
			'fields' => array('Film.id', 'Film.titre')
		));
		$this->set(compact('films'));

		$salles = $this->Salle->find('list', array(
			'fields' => array('Salle.id', 'Salle.nom')
		));
		$this->set(compact('salles'));
	}

	//Modifier une séance
    public function admin_edit($id = null) {
        if (empty($this->data)) {
            $this->Seance->id = $id;
            $this->data = $this->Seance->read();
        } else {

            //Enregistrement dans la base
            if ($this->Seance->save($this->data['Seance'])) {
                $this->Session->setFlash('La séance a été modifié.');
                $this->redirect(array('admin' => true,'controller' => 'seances', 'action' => 'index', $this->data['Seance']['film_id']));
            }
        }

        $films = $this->Film->find('list', array(
			'fields' => array('Film.id', 'Film.titre')
		));
		$this->set(compact('films'));

		$salles = $this->Salle->find('list', array(
			'fields' => array('Salle.id', 'Salle.nom')
		));
		$this->set(compact('salles'));
    }

	public function admin_delete($id) {
        $this->Seance->delete($id);
        $this->Session->setFlash('La séance a été supprimé.');
        $this->redirect(array('admin' => true,'controller' => 'films', 'action' => 'index'));
    }
}
?>